//vuex有关user的的数据
import { login, userInfo, getsUser } from '@/api/user'
import { setToken, getToken,removeToken,setTiem } from '@/utils/auth'

const state = {
  // 保存token
  token: getToken(),
  // 用户信息：名字和id
  userInfo: {},
}

const mutations = {
// token存到vuex的state
  setToken (state, token) {
    state.token = token
    setToken(token)
    setTiem()
  },
  //用户信息存到state
  setUserIofn (state, payload) {
    // 存到vuex的state
    state.userInfo = payload
  },
  // 退出登录删除token
  removeToken(state) {
    //清空token
    state.token = null
    //删除本地token
    removeToken()
  },
  //退出登录删除用户信息
  removeUserInfo(state) {
    //删除用户信息
    state.userInfo={}
  }
}

const actions = {
  // 发请求获取token
  async login (context, data) {
    try {
      // 传入参数
    let res = await login(data)
    context.commit('setToken',res.data)
    } catch (error) {
      return Promise.reject(error)
    }
  },
  // 获取用户信息接口
  async getUserInfo(context) {
    //获取用户name，id
    let res = await userInfo()
    //获取用户头像，需要传用户id
    let res2 = await getsUser(res.data.userId)
    //使用展开运算符把上面的两个对象展开变成新的对象
    let res3 = {
      ...res.data ,
      ...res2.data ,
    }
    
    context.commit('setUserIofn',res3)
  },
  // 退出登录
  logout({commit}) {
    commit('removeToken')
    commit('removeUserInfo')
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
